/*
给定一个正整数 num，编写一个函数，如果 num 是一个完全平方数，则返回 True，否则返回 False。

说明：不要使用任何内置的库函数，如  sqrt。

示例 1：

输入：16
输出：True
示例 2：

输入：14
输出：False

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/valid-perfect-square
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
class Solution {
public:
    bool isPerfectSquare(int num) {
        if(num==1){
            return true;
        }
        int l=1;
        int r=num;
        int m=0;
        while(l<r){
            m=l+(r-l)/2;
            if((num%m==0)&&(m==num/m)){
                return true;
            }else if(m>=num/m){
                r=m-1;
            }else if(m<num/m){
                l=m+1;
            }
            //cout<<"l:"<<l<<" r:"<<r<<" m:"<<m<<endl;
        }   
        return (num%l==0)&&(l==num/l);
    }
};